package com.xinqi.modules.stats.studyanalysis.service;

import com.xinqi.common.mybatis.data.service.BaseService;
import com.xinqi.modules.stats.content.domain.CourseContentEntity;
import com.xinqi.modules.stats.studyanalysis.dto.req.StudentAnalysisQueryDTO;
import com.xinqi.modules.stats.studyanalysis.dto.req.StudentInfoAnalysisQueryDTO;
import com.xinqi.modules.stats.studyanalysis.dto.req.StudyAnalysisExportDTO;
import com.xinqi.modules.stats.studyanalysis.dto.rsp.StudentAnalysisContentResultDTO;
import com.xinqi.modules.stats.studyanalysis.dto.rsp.StudyAnalysisVo;

import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Map;

public interface StudyAnalysisService extends BaseService<CourseContentEntity> {

    List<StudyAnalysisVo> wholeAnalysis(Long classId);

    Map<String, Object> studentAnalysis(StudentAnalysisQueryDTO analysisQueryDTO);

    Map<String, Object> studentInfoAnalysis(StudentInfoAnalysisQueryDTO analysisQueryDTO);

    String calculateFinishedRateReturnInteger(StudentAnalysisContentResultDTO result);

    /**
     * 校验是否需生成老师统计信息
     * @param classId 班级ID
     * @description 目前：定时时间 每晚12点生成一次
     * @Author dzy
     */
    void checkCreateAnalysis(Long classId);

    /**
     * 定时生成 老师端 汇总数据
     * @description 目前：定时时间 每晚12点生成一次
     * @Author dzy
     */
    void timingCreateAnalysis();

    /**
     * 导出学生学习记录
     * @description 目前：定时时间 每晚12点生成一次
     * @Author dzy
     */
    void studyAnalysisExport(StudyAnalysisExportDTO exportDTO, HttpServletResponse response);

}
